Skip to main content

Penny Drop - Bank Account Verification API

The following document highlights the details of the Penny Drop API.

API Description

Objective

The Penny Drop API validates a bank account number and the Indian Financial System Code(IFSC) associated with it by making a transaction of 1 rupee (a penny drop).

InputOutput
The account number and its IFSCThe response indicating the status of the transaction and additional details such as the account holder's name

API URL

https://ind-engine.thomas.hyperverge.co/v1/checkBankAccount

API Endpoint

checkBankAccount

Overview

The Penny Drop API is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format, and you should upload all images and files as form-data through a POST request.

Method - POST

Authentication

You need a unique pair of application ID ( appId ) and application key ( appKey ) from HyperVerge to verify your identity for accessing the API.

Headers

HeaderMandatory / OptionalDescriptionInput Format
content-type MandatoryThis parameter defines the media type for the request payloadmultipart/form-data
appId MandatoryThe application identifier shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
appKey MandatoryThe application key shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
transactionIdMandatoryA unique identifier for tracking a user journeyThis should be both unique and easily associated with the user's journey in your application(s)

Inputs

The following table provides the details of the parameters required for the Penny Drop API's request body:

ParameterMandatory / OptionalTypeDescriptionInput FormatDefault Value
ifscMandatorystringThe IFSC of the account's branchNot ApplicableNot Applicable
accountNumberMandatorystringThe account number associated with the bank accountNot ApplicableNot Applicable
strictValidationOptionalstringThis parameter triggers a failure response for Blocked and Overseas accounts if the account name cannot be retrieved. Refer to the Error Responses section for a complete overview of the responses returned when this parameter is enabled in the request.yes / nono

Request

The following code snippet demonstrates a standard curl request for the Penny Drop API:

curl --location --request POST 'https://ind-engine.thomas.hyperverge.co/v1/checkBankAccount' \
--header 'Content-Type: application/json' \
--header 'appId: <Enter_the_HyperVerge_appId>' \
--header 'appKey: <Enter_the_HyperVerge_appKey>' \
--header 'transactionId: <Enter_the_HyperVerge_transactionID>' \
--data '{
"ifsc": "<IFSC code>",
"accountNumber": "<Account number>",
"strictValidation": "<Enter_Yes_or_No>"
}'

Success Response

The following code snippet demonstrates a success response from the Penny Drop API:

info
These are the responses returned when either the strictValidation parameter is not enabled in the request OR it is set to no.
{
"status": "success",
"statusCode": "200",
"result": {
"bankResponse": "Transaction Successful",
"ifsc": "<IFSC>",
"accountNumber": "<Account_Number>",
"accountName": "<Name_of_the_Account_Holder>",
"bankTxnStatus": true
}
}

Success Response Details

The following table outlines the details of the success response from the Penny Drop API:

ParameterTypeDescription
statusstringThe status of the request
statusCodestringThe HTTP status code for the response
resultobjectThe JSON object containing the bank account verification details
result.bankResponsestringIndicates the result of the transaction, signaling whether it was a success or a failure.
result.ifscstringThe IFSC Code of the bank account for reference.
result.accountNumberstringThe account number associated with the bank transaction.
result.accountNamestringThe name of the account holder associated with the bank account.
result.bankTxnStatusbooleanIndicates the status of the transaction, with a value of "true" if the transaction was successful and "false" if it was not.

Failure Response

The following code snippet demonstrates a failure response from the Penny Drop API for a blocked account:

{
"status": "success",
"statusCode": "200",
"result": {
"bankResponse": "Account is blocked",
"ifsc": "<Enter_the_IFSC>",
"accountNumber": "<Enter_the_Account_Number>",
"accountName": "<Enter_the_Name_of_the_Account_Holder>",
"bankTxnStatus": false
}
}

Error Responses

The following are some error responses from the Penny Drop API:

{
"status": "failure",
"statusCode": "400",
"error": "ifsc length must be 11 characters long"
}
{
"status": "failure",
"statusCode": "422",
"error": "Invalid value passed for an input: IFSC"
}
{
"status": "failure",
"statusCode": "500",
"error": "Internal Server Error"
}
{
"status": "failure",
"statusCode": "500",
"error": "Bank Error: NPCI Unavailable"
}

Error Response Details

A failure or error response contains a failure status with a relevant status code and error message.
The following table lists all error responses:

Status CodeError MessageError DescriptionError Resolution
400ifsc length must be 11 characters longThe length of the IFSC provided is not 11 characters long as required.Provide an IFSC code that is exactly 11 characters long
400accountNumber length must be at least 6 characters longThe length of the account number provided is less than the required minimum of 6 characters.Provide an account number that is at least 6 characters long
400accountNumber length must be less than or equal to 25 characters longThe length of the account number provided exceeds the maximum limit of 25 charactersProvide an account number that is 25 characters or less
422Invalid value passed for an input: Account number or IFSCAn invalid value was provided for either the account number or IFSC in the inputVerify and provide valid account number and IFSC values
422Invalid value passed for an input: Account numberAn invalid value was provided for the account number in the inputVerify and provide a valid account number
422Invalid value passed for an input: IFSCAn invalid value was provided for the IFSC in the inputVerify and provide a valid IFSC code
422Invalid value passed for an input: IFSC patternAn invalid value was provided for the IFSC pattern in the inputProvide an IFSC code that follows the correct format pattern
422Given account is an NRE accountThe accountName parameter — which provides the name of the user associated with the bank account — cannot be retrieved for an Overseas account. Only returned when the strictValidation parameter is enabled in the request and is set to yesUse a non-NRE account or disable strictValidation if account name retrieval is not required
422Account is blockedThe accountName parameter — which provides the name of the user associated with the bank account — cannot be retrieved for a Blocked account. Only returned when the strictValidation parameter is enabled in the request and is set to yesUse an unblocked account or disable strictValidation if account name retrieval is not required
429Requests rate limit exceededThe rate limit for API requests has been exceeded.Retry the request after some time or contact the HyperVerge team if the issue persists
500Internal Server ErrorKindly check the request headers or contact the HyperVerge team for resolution.Check the request headers or contact the HyperVerge team for resolution
500Bank Error: IMPS Mode FailA bank-related error, specifically the failure of the IMPS modeRetry the request after some time or contact the HyperVerge team if the issue persists
500Bank Error: Beneficiary Bank OfflineA bank-related error, with the beneficiary bank being offlineRetry the request after some time when the bank is back online
500Bank Error: Source Bank DeclinedA bank-related error, with the source bank declining the transactionContact the source bank or retry the request after some time
500Bank Error: Failed at BankA bank-related error, with the transaction failing at the bankRetry the request after some time or contact the HyperVerge team if the issue persists
500Bank Error: Transaction FailedA bank-related error, with the transaction failingRetry the request after some time or contact the HyperVerge team if the issue persists
500Bank Error: NPCI UnavailableA bank-related error, with the National Payments Corporation of India (NPCI) being unavailableRetry the request after some time when NPCI services are available
500Bank Error: Failed at Beneficiary BankA bank-related error, with the transaction failing at the beneficiary bankRetry the request after some time or contact the beneficiary bank
500Bank Error: IMPS not supported on Beneficiary AccountA bank-related error, with the beneficiary account not supporting IMPSUse a different account that supports IMPS transactions
500Bank Error: Verification Attempt FailedA bank-related error, specifically a failure in the verification attemptRetry the request after some time or contact the HyperVerge team if the issue persists
500Data Source not AvailableThe requested data source is temporarily unavailableRetry the request after some time when the data source is available
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: